package cn.cdliux.spring.beans.factory;

import cn.cdliux.spring.beans.BeansException;
import cn.cdliux.spring.beans.factory.config.AutowireCapableBeanFactory;
import cn.cdliux.spring.beans.factory.config.BeanDefinition;
import cn.cdliux.spring.beans.factory.config.BeanPostProcessor;
import cn.cdliux.spring.beans.factory.config.ConfigureableBeanFactory;

public interface ConfigureableListableBeanFactory extends ListableBeanFactory, AutowireCapableBeanFactory, ConfigureableBeanFactory {

    BeanDefinition getBeanDefinition(String beanName) throws BeansException;

    /**
     * 添加 bean 后置增强器
     * @param beanPostProcessor
     */
    void addBeanPostProcessor(BeanPostProcessor beanPostProcessor);


    /**
     * 提前实例化单例 bean
     * @throws BeansException
     */
    void  preInstantiateSingletons() throws BeansException;

}
